package s.f.jndi;

import s.f.util.AppException;
import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

/**
 * Clase conexión JNDI.
 * @author Froy
 */
public class ConexionJNDI {
    
    /**
     * Obtener conexion JNDI.
     * @return
     * @throws AppException 
     */
    public static Connection getConnection() throws AppException {
        DataSource ds = null;
        Connection con = null;
        try {
            InitialContext ctx = new InitialContext();
            ds = (DataSource) ctx.lookup("java:Empleados"); //El nombre JNDI al que se asoció el DataSource
        } catch (NamingException nex) {
            throw new AppException("No se establecio la referencia al JNDI", nex);
        }
        try {
            con = ds.getConnection();
        } catch (SQLException sqlex) {
            throw new AppException("No se establecio la conexión", sqlex);
        }
        return con;
    }
    
    /**
     * Cierra la conexión a la base de datos.
     * @param connection Solicita la conexión para cerrarla.
     * @throws AppException 
     */
    public static void closeConnection(Connection connection) throws AppException {
        if (connection != null) {
            try {
                connection.close();
            } catch (Exception ex) {
                throw new AppException("Error al cerrar la conexión", ex);
            }
        }
    }
}
